package com.zztest.aitestmini.controller.jenkins;

import com.alibaba.fastjson.JSONObject;
import com.zztest.aitestmini.common.TokenDb;
import com.zztest.aitestmini.common.UserBaseStr;
import com.zztest.aitestmini.dto.ResultDto;
import com.zztest.aitestmini.dto.TokenDto;
import com.zztest.aitestmini.dto.jenkins.AddHogwartsTestJenkinsDto;
import com.zztest.aitestmini.entity.HogwartsTestJenkins;
import com.zztest.aitestmini.service.HogwartsTestJenkinsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author: zhangcheng
 * @Description: jenkins 管理
 * @Date: 2021/4/13/013 16:17
 * @Version: 1.0
 */
@Slf4j
@Api(tags = "Jenkins管理")
@RestController
@RequestMapping("/jenkins")
public class HogwartsTestJenkinsController {

    @Autowired
    private HogwartsTestJenkinsService hogwartsTestJenkinsService;
    @Autowired
    private TokenDb tokenDb;

    /**
     * @param request 请求体
     * @param addHogwartsTestJenkinsDto
     * @return
     */
    @ApiOperation(value = "添加Jenkins")
    @PostMapping
    public ResultDto<HogwartsTestJenkins> save(HttpServletRequest request, @RequestBody AddHogwartsTestJenkinsDto addHogwartsTestJenkinsDto) {
        log.info("添加Jenkins-入参= "+ JSONObject.toJSONString(addHogwartsTestJenkinsDto));

        // 调用方法
        HogwartsTestJenkins hogwartsTestJenkins = new HogwartsTestJenkins();
        //使用spring工具 直接赋值 将 dto 赋值给hogwartsTestJenkins 实体
        BeanUtils.copyProperties(addHogwartsTestJenkinsDto,hogwartsTestJenkins);
        //获取token
        String tokenStr = request.getHeader(UserBaseStr.LOGIN_TOKEN);
        // 获取token详细信息
        TokenDto tokenDto = tokenDb.getUserInfo(tokenStr);
        //从tokendto获取id 赋值
        hogwartsTestJenkins.setCreateUserId(tokenDto.getUserId());
        // 获取文件名后缀
        String caseSuffix = addHogwartsTestJenkinsDto.getCommandRunCaseSuffix();
        //过滤带.的后缀，如.yml改为yml
        if (StringUtils.isEmpty(caseSuffix)&&caseSuffix.startsWith(".")){
            caseSuffix = caseSuffix.replace(".", "");
        }
        //TOKEN
        hogwartsTestJenkinsService.save(tokenDto,hogwartsTestJenkins);
        return   ResultDto.success("成功",hogwartsTestJenkins);
    }




}
